package helpers;

import java.util.Locale;

import com.thoughtworks.xstream.converters.SingleValueConverter;

/*
 * Wird für XStream-Serialisierung benötigt!
 * 
 * Füllt ID mit führenden Nullen auf, sodass sie sechs Zeichen hat
 * z.B. 2 zu 000002
 */
public class IDConverter implements SingleValueConverter {

	/*
	 * Überprüft, ob eine Konvertierung möglich ist
	 * (hier nur dann, wenn Object vom Typ Long ist)
	 */
	@Override
	public boolean canConvert(Class type) {
		return type.equals(Long.class);
	}

	/*
	 * Methode zur eigentlichen Konvertierung
	 * Übergabeparameter ist z.B. 2 und Rückgabe dann 000002
	 * 
	 * Wird beim Schreiben des XML-Formats verwendet
	 */
	@Override
	public String toString(Object obj) {
		// Zu kompliziert
		// String idStr = String.valueOf(obj);
		// while (idStr.length() < 6) {
		// idStr = "0" + idStr; // solange Länge 6 nicht erreicht ist, vorne 0 anhängen
		// }

		// %06 -> 6 Stellen
		// d -> Dezimalzahl
		return String.format("%06d", obj);
	}

	/*
	 * ID aus der XML wird als String übergeben und in Long umgewandelt
	 * 
	 * Wird beim Lesen des XML-Formats verwendet
	 */
	@Override
	public Object fromString(String str) {
		return Long.parseLong(str);
	}

}
